WebAssembly ์์คํ ์ธํฐํ์ด์ค(WASI) ์ค๋ ๋ฉ ๋ชจ๋ธ, ๋ฉํฐ์ค๋ ๋ฉ ์ธํฐํ์ด์ค ์ค๊ณ, ์ฅ์ , ๊ณผ์ ๋ฐ ํฌ๋ก์คํ๋ซํผ ๊ฐ๋ฐ์ ๋ฏธ์น๋ ์ํฅ์ ํ๊ตฌํฉ๋๋ค.
WebAssembly WASI ์ค๋ ๋ฉ ๋ชจ๋ธ: ๋ฉํฐ์ค๋ ๋ฉ ์ธํฐํ์ด์ค ์ค๊ณ ์ฌ์ธต ๋ถ์
WebAssembly(Wasm)๋ ์ด์ ๊ฐ๋ฅํ๊ณ ํจ์จ์ ์ด๋ฉฐ ์์ ํ ์คํ ํ๊ฒฝ์ ์ ๊ณตํ์ฌ ์น ๊ฐ๋ฐ์ ํ์ ์ ๊ฐ์ ธ์์ต๋๋ค. ๋ธ๋ผ์ฐ์ ๋ฐ ๊ธฐํ ํ๊ฒฝ์์ ๋ค์ดํฐ๋ธ์ ๊ฐ๊น์ด ์ฝ๋ ์๋๋ก ์คํํ ์ ์๋ ๋ฅ๋ ฅ ๋๋ถ์ ๋ค์ํ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ธ๊ธฐ ์๋ ์ ํ์ง๊ฐ ๋์์ต๋๋ค. ํ์ง๋ง ์ต๊ทผ๊น์ง WebAssembly๋ ํ์คํ๋ ์ค๋ ๋ฉ ๋ชจ๋ธ์ด ๋ถ์กฑํ์ฌ ์ต์ ๋ฉํฐ์ฝ์ด ํ๋ก์ธ์์ ์ ์ฌ๋ ฅ์ ์์ ํ ํ์ฉํ๋ ๋ฐ ํ๊ณ๊ฐ ์์์ต๋๋ค. WebAssembly ์์คํ ์ธํฐํ์ด์ค(WASI)๋ WebAssembly ๋ชจ๋ ๋ด์์ ์ค๋ ๋๋ฅผ ํฌํจํ ์์คํ ๋ฆฌ์์ค์ ์ ๊ทผํ๋ ํ์คํ๋ ๋ฐฉ๋ฒ์ ๋์ ํ์ฌ ์ด๋ฌํ ํ๊ณ๋ฅผ ํด๊ฒฐํ๊ณ ์์ต๋๋ค. ์ด ๊ธ์์๋ WASI ์ค๋ ๋ฉ ๋ชจ๋ธ, ๋ฉํฐ์ค๋ ๋ฉ ์ธํฐํ์ด์ค ์ค๊ณ, ์ ๊ณตํ๋ ์ด์ , ๋น๋ฉด ๊ณผ์ , ๊ทธ๋ฆฌ๊ณ ํฌ๋ก์คํ๋ซํผ ๊ฐ๋ฐ์ ๋ฏธ์น๋ ์ํฅ์ ๋ํด ํ๊ตฌํฉ๋๋ค.
WebAssembly์ WASI ์ดํดํ๊ธฐ
WASI ์ค๋ ๋ฉ ๋ชจ๋ธ์ ์ธ๋ถ ์ฌํญ์ ์ดํด๋ณด๊ธฐ ์ ์, WebAssembly์ WASI์ ๊ธฐ๋ณธ ๊ฐ๋ ์ ์ดํดํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
WebAssembly๋ ๋ฌด์์ธ๊ฐ?
WebAssembly(Wasm)๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ํ ์ด์ ๊ฐ๋ฅํ ์ปดํ์ผ ๋์์ผ๋ก ์ค๊ณ๋ ๋ฐ์ด๋๋ฆฌ ๋ช ๋ น์ด ํ์์ผ๋ก, ํด๋ผ์ด์ธํธ ๋ฐ ์๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ ์น์ ๋ฐฐํฌํ ์ ์๊ฒ ํฉ๋๋ค. ๋ค์ํ ํ๋ซํผ์์ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ณตํต ํ๋์จ์ด ๊ธฐ๋ฅ์ ํ์ฉํ์ฌ ๋ค์ดํฐ๋ธ์ ๊ฐ๊น์ด ์๋๋ก ์คํ๋๋๋ก ์ค๊ณ๋์์ต๋๋ค. WebAssembly์ ์ฃผ์ ํน์ง์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ์ด์์ฑ: WebAssembly ๋ชจ๋์ ์น ๋ธ๋ผ์ฐ์ , ์๋ฒ ์ธก ๋ฐํ์, ์๋ฒ ๋๋ ์์คํ ์ ํฌํจํ์ฌ WebAssembly ํ์ค์ ์ง์ํ๋ ๋ชจ๋ ํ๊ฒฝ์์ ์คํ๋ ์ ์์ต๋๋ค.
- ์ฑ๋ฅ: WebAssembly๋ ๊ณ ์ฑ๋ฅ์ ์ํด ์ค๊ณ๋์ด ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ค์ดํฐ๋ธ ์ฝ๋์ ๋น์ทํ ์๋๋ก ์คํ๋ ์ ์๋๋ก ํฉ๋๋ค.
- ๋ณด์: WebAssembly๋ ์๋๋ฐ์ค ์คํ ํ๊ฒฝ์ ์ ๊ณตํ์ฌ ์ ์ฑ ์ฝ๋๊ฐ ๋ช ์์ ์ธ ํ๊ฐ ์์ด ์์คํ ๋ฆฌ์์ค์ ์ ๊ทผํ๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค.
- ํจ์จ์ฑ: WebAssembly ๋ชจ๋์ ์ผ๋ฐ์ ์ผ๋ก ๋๋ฑํ JavaScript ์ฝ๋๋ณด๋ค ํฌ๊ธฐ๊ฐ ์์ ๋ค์ด๋ก๋ ๋ฐ ์์ ์๊ฐ์ด ๋ ๋น ๋ฆ ๋๋ค.
WASI๋ ๋ฌด์์ธ๊ฐ?
WebAssembly ์์คํ ์ธํฐํ์ด์ค(WASI)๋ WebAssembly๋ฅผ ์ํ ๋ชจ๋ํ ์์คํ ์ธํฐํ์ด์ค์ ๋๋ค. ์ด๋ WebAssembly ๋ชจ๋์ด ํ์ผ, ๋คํธ์ํฌ ์์ผ, ๊ทธ๋ฆฌ๊ณ ์ด์ ๋ ์ค๋ ๋์ ๊ฐ์ ์์คํ ๋ฆฌ์์ค์ ์ ๊ทผํ ์ ์๋ ํ์คํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. WASI๋ WebAssembly ๋ชจ๋์ด ์ธ๋ถ ์ธ๊ณ์ ์ํธ ์์ฉํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ์์คํ ํธ์ถ ์งํฉ์ ์ ์ํจ์ผ๋ก์จ WebAssembly์ ์ ํ๋ ํธ์คํธ ํ๊ฒฝ ์ ๊ทผ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค. WASI์ ์ฃผ์ ์ธก๋ฉด์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ํ์คํ: WASI๋ ์์คํ ๋ฆฌ์์ค ์ ๊ทผ์ ์ํ ํ์คํ๋ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ์ฌ WebAssembly ๋ชจ๋์ด ๋ค๋ฅธ ํ๋ซํผ์์๋ ์ผ๊ด๋๊ฒ ์คํ๋ ์ ์๋๋ก ๋ณด์ฅํฉ๋๋ค.
- ๋ณด์: WASI๋ ๊ธฐ๋ฅ ๊ธฐ๋ฐ ๋ณด์ ๋ชจ๋ธ์ ์ ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ช ์์ ์ผ๋ก ํ์ํ ๋ฆฌ์์ค์๋ง ์ ๊ทผํ๋๋ก ํ์ฉํฉ๋๋ค.
- ๋ชจ๋์ฑ: WASI๋ ๋ชจ๋์์ผ๋ก ์ค๊ณ๋์ด ๊ฐ๋ฐ์๊ฐ ์์ ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ํ ์์คํ ์ธํฐํ์ด์ค๋ฅผ ์ ํํ ์ ์๊ฒ ํ์ฌ WebAssembly ๋ชจ๋์ ์ ์ฒด ํฌ๊ธฐ์ ๋ณต์ก์ฑ์ ์ค์ ๋๋ค.
- ํฌ๋ก์คํ๋ซํผ ํธํ์ฑ: WASI๋ ๋ค์ํ ์ด์ ์ฒด์ ์์ ์ผ๊ด๋ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ์ฌ ํฌ๋ก์คํ๋ซํผ ๊ฐ๋ฐ์ ์ฉ์ดํ๊ฒ ํ๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค.
WebAssembly์์ ์ค๋ ๋ฉ ๋ชจ๋ธ์ ํ์์ฑ
์ ํต์ ์ผ๋ก WebAssembly๋ ๋จ์ผ ์ค๋ ๋ ํ๊ฒฝ์์ ์๋ํ์ต๋๋ค. ์ด ๋ชจ๋ธ์ ๋จ์์ฑ๊ณผ ๋ณด์์ ์ ๊ณตํ์ง๋ง, ์ต์ ๋ฉํฐ์ฝ์ด ํ๋ก์ธ์๋ฅผ ์ต๋ํ ํ์ฉํ๋ ๋ฅ๋ ฅ์ ์ ํํ์ต๋๋ค. ์ด๋ฏธ์ง ์ฒ๋ฆฌ, ๊ณผํ ์๋ฎฌ๋ ์ด์ , ๊ฒ์ ๊ฐ๋ฐ๊ณผ ๊ฐ์ ๋ง์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ๋ฌ ์ค๋ ๋๋ฅผ ์ฌ์ฉํ ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ก๋ถํฐ ์๋นํ ์ด์ ์ ์ป์ ์ ์์ต๋๋ค. ํ์คํ๋ ์ค๋ ๋ฉ ๋ชจ๋ธ์ด ์์๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐ์๋ค์ ๋ค์๊ณผ ๊ฐ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์์กดํด์ผ ํ์ต๋๋ค:
- ์น ์์ปค(Web Workers): ์น ๋ธ๋ผ์ฐ์ ์์๋ ์น ์์ปค๋ฅผ ์ฌ์ฉํ์ฌ ์์ ์ ๋ณ๋์ ์ค๋ ๋๋ก ์คํ๋ก๋ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด ์ ๊ทผ ๋ฐฉ์์ ๋ฉ์ธ ์ค๋ ๋์ ์์ปค ๊ฐ์ ํต์ ๋ฐ ๋ฐ์ดํฐ ๊ณต์ ์ธก๋ฉด์์ ํ๊ณ๊ฐ ์์ต๋๋ค.
- ๋น๋๊ธฐ ์์ (Asynchronous Operations): ๋น๋๊ธฐ ์์ ์ ์๋ต์ฑ์ ํฅ์์ํฌ ์ ์์ง๋ง, ์ง์ ํ ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ฅผ ์ ๊ณตํ์ง๋ ์์ต๋๋ค.
- ์ฌ์ฉ์ ์ง์ ์๋ฃจ์ (Custom Solutions): ๊ฐ๋ฐ์๋ค์ ํน์ ํ๋ซํผ์ ์ํ ๋ง์ถคํ ์๋ฃจ์ ์ ๋ง๋ค์์ง๋ง, ์ด๋ ํ์คํ์ ์ด์์ฑ์ด ๋ถ์กฑํฉ๋๋ค.
WASI ์ค๋ ๋ฉ ๋ชจ๋ธ์ ๋์ ์ WebAssembly ๋ชจ๋ ๋ด์์ ์ค๋ ๋๋ฅผ ์์ฑํ๊ณ ๊ด๋ฆฌํ๋ ํ์คํ๋๊ณ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ์ ์ ๊ณตํจ์ผ๋ก์จ ์ด๋ฌํ ํ๊ณ๋ฅผ ํด๊ฒฐํฉ๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ์ฌ์ฉ ๊ฐ๋ฅํ ํ๋์จ์ด ๋ฆฌ์์ค๋ฅผ ์์ ํ ํ์ฉํ์ฌ ์ฑ๋ฅ๊ณผ ํ์ฅ์ฑ์ ํฅ์์ํค๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฑํ ์ ์์ต๋๋ค.
WASI ์ค๋ ๋ฉ ๋ชจ๋ธ: ์ค๊ณ ๋ฐ ๊ตฌํ
WASI ์ค๋ ๋ฉ ๋ชจ๋ธ์ WebAssembly ๋ชจ๋ ๋ด์์ ์ค๋ ๋๋ฅผ ์์ฑํ๊ณ ๊ด๋ฆฌํ๊ธฐ ์ํ ์ ์์ค ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋๋ก ์ค๊ณ๋์์ต๋๋ค. ์ด๋ ๊ธฐ์กด WASI API๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฉฐ ์ค๋ ๋ ์์ฑ, ๋๊ธฐํ ๋ฐ ํต์ ์ ์ํ ์๋ก์ด ์์คํ ํธ์ถ์ ๋์ ํฉ๋๋ค. WASI ์ค๋ ๋ฉ ๋ชจ๋ธ์ ์ฃผ์ ๊ตฌ์ฑ ์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
๊ณต์ ๋ฉ๋ชจ๋ฆฌ
๊ณต์ ๋ฉ๋ชจ๋ฆฌ๋ ๋ฉํฐ์ค๋ ๋ฉ์ ๊ธฐ๋ณธ ๊ฐ๋ ์ ๋๋ค. ์ฌ๋ฌ ์ค๋ ๋๊ฐ ๋์ผํ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ ๊ทผํ ์ ์๊ฒ ํ์ฌ ํจ์จ์ ์ธ ๋ฐ์ดํฐ ๊ณต์ ์ ํต์ ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. WASI ์ค๋ ๋ฉ ๋ชจ๋ธ์ ์ค๋ ๋ ๊ฐ ํต์ ์ ์ฉ์ดํ๊ฒ ํ๊ธฐ ์ํด ๊ณต์ ๋ฉ๋ชจ๋ฆฌ์ ์์กดํฉ๋๋ค. ์ด๋ ์ฌ๋ฌ WebAssembly ์ธ์คํด์ค๊ฐ ๋์ผํ ์ ํ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ ์ ์์์ ์๋ฏธํ๋ฉฐ, ์ด๋ฅผ ํตํด ์ด๋ฌํ ์ธ์คํด์ค ๋ด์ ์ค๋ ๋๊ฐ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ ์ ์์ต๋๋ค.
๊ณต์ ๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฅ์ ์์์ ๋ฉ๋ชจ๋ฆฌ ์ฐ์ฐ์ ์ํ ์๋ก์ด ๋ช
๋ น์ด๋ฅผ ๋์
ํ๋ memory.atomic.enable ์ ์์ ํตํด ํ์ฑํ๋ฉ๋๋ค. ์์์ ์ฐ์ฐ์ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ด ๋๊ธฐํ๋๋๋ก ๋ณด์ฅํ์ฌ ๊ฒฝ์ ์กฐ๊ฑด(race condition)๊ณผ ๋ฐ์ดํฐ ์์์ ๋ฐฉ์งํฉ๋๋ค. ์์์ ์ฐ์ฐ์ ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ์์์ ๋ก๋ ๋ฐ ์ ์ฅ(Atomic Loads and Stores): ์ด ์ฐ์ฐ๋ค์ ์ค๋ ๋๊ฐ ๋ฉ๋ชจ๋ฆฌ ์์น๋ฅผ ์์์ ์ผ๋ก ์ฝ๊ณ ์ธ ์ ์๊ฒ ํฉ๋๋ค.
- ์์์ ๋น๊ต ๋ฐ ๊ตํ(Atomic Compare and Exchange): ์ด ์ฐ์ฐ์ ์ค๋ ๋๊ฐ ๋ฉ๋ชจ๋ฆฌ ์์น๋ฅผ ์ฃผ์ด์ง ๊ฐ๊ณผ ์์์ ์ผ๋ก ๋น๊ตํ๊ณ , ๋ง์ฝ ๊ฐ๋ค๋ฉด ๊ทธ ๊ฐ์ ์๋ก์ด ๊ฐ์ผ๋ก ๊ต์ฒดํ ์ ์๊ฒ ํฉ๋๋ค.
- ์์์ ๋ง์ , ๋บ์ , And, Or, Xor: ์ด ์ฐ์ฐ๋ค์ ์ค๋ ๋๊ฐ ๋ฉ๋ชจ๋ฆฌ ์์น์ ๋ํด ์ฐ์ ๋ฐ ๋นํธ ์ฐ์ฐ์ ์์์ ์ผ๋ก ์ํํ ์ ์๊ฒ ํฉ๋๋ค.
์์์ ์ฐ์ฐ์ ์ฌ์ฉ์ ๋ฉํฐ์ค๋ ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ํ์ฑ๊ณผ ์ ๋ขฐ์ฑ์ ๋ณด์ฅํ๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค.
์ค๋ ๋ ์์ฑ ๋ฐ ๊ด๋ฆฌ
WASI ์ค๋ ๋ฉ ๋ชจ๋ธ์ ์ค๋ ๋ ์์ฑ ๋ฐ ๊ด๋ฆฌ๋ฅผ ์ํ ์์คํ ํธ์ถ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฌํ ์์คํ ํธ์ถ์ ํตํด WebAssembly ๋ชจ๋์ ์๋ก์ด ์ค๋ ๋๋ฅผ ์์ฑํ๊ณ , ์คํ ํฌ๊ธฐ๋ฅผ ์ค์ ํ๋ฉฐ, ์คํ์ ์์ํ ์ ์์ต๋๋ค. ์ค๋ ๋ ์์ฑ ๋ฐ ๊ด๋ฆฌ๋ฅผ ์ํ ์ฃผ์ ์์คํ ํธ์ถ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
thread.spawn: ์ด ์์คํ ํธ์ถ์ ์๋ก์ด ์ค๋ ๋๋ฅผ ์์ฑํฉ๋๋ค. ์ด๋ ์ ์ค๋ ๋์ ์ง์ ์ ์ ์ง์ ํ๋ ํจ์ ํฌ์ธํฐ๋ฅผ ์ธ์๋ก ๋ฐ์ต๋๋ค.thread.exit: ์ด ์์คํ ํธ์ถ์ ํ์ฌ ์ค๋ ๋๋ฅผ ์ข ๋ฃํฉ๋๋ค.thread.join: ์ด ์์คํ ํธ์ถ์ ์ค๋ ๋๊ฐ ์ข ๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฝ๋๋ค. ์ค๋ ๋ ID๋ฅผ ์ธ์๋ก ๋ฐ์ ์ง์ ๋ ์ค๋ ๋๊ฐ ์ข ๋ฃ๋ ๋๊น์ง ๋ธ๋กํนํฉ๋๋ค.thread.id: ์ด ์์คํ ํธ์ถ์ ํ์ฌ ์ค๋ ๋์ ID๋ฅผ ๋ฐํํฉ๋๋ค.
์ด๋ฌํ ์์คํ ํธ์ถ์ WebAssembly ๋ชจ๋ ๋ด์์ ์ค๋ ๋๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ ๊ธฐ๋ณธ์ ์ด๋ฉด์๋ ํ์์ ์ธ ๋๊ตฌ ์งํฉ์ ์ ๊ณตํฉ๋๋ค.
๋๊ธฐํ ํ๋ฆฌ๋ฏธํฐ๋ธ
๋๊ธฐํ ํ๋ฆฌ๋ฏธํฐ๋ธ๋ ์ฌ๋ฌ ์ค๋ ๋์ ์คํ์ ์กฐ์ ํ๊ณ ๊ฒฝ์ ์กฐ๊ฑด์ ๋ฐฉ์งํ๋ ๋ฐ ํ์์ ์ ๋๋ค. WASI ์ค๋ ๋ฉ ๋ชจ๋ธ์๋ ๋ค์๊ณผ ๊ฐ์ ์ฌ๋ฌ ๋๊ธฐํ ํ๋ฆฌ๋ฏธํฐ๋ธ๊ฐ ํฌํจ๋ฉ๋๋ค:
- ๋ฎคํ ์ค(Mutexes): ๋ฎคํ ์ค(์ํธ ๋ฐฐ์ ์ ๊ธ)๋ ๊ณต์ ๋ฆฌ์์ค์ ๋ํ ๋์ ์ ๊ทผ์ ๋ณดํธํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ค๋ ๋๋ ๋ณดํธ๋ ๋ฆฌ์์ค์ ์ ๊ทผํ๊ธฐ ์ ์ ๋ฎคํ ์ค๋ฅผ ํ๋ํด์ผ ํ๋ฉฐ, ์์ ์ด ๋๋๋ฉด ๋ฎคํ ์ค๋ฅผ ํด์ ํด์ผ ํฉ๋๋ค. WASI ์ค๋ ๋ฉ ๋ชจ๋ธ์ ๋ฎคํ ์ค๋ฅผ ์์ฑ, ์ ๊ธ ๋ฐ ํด์ ํ๋ ์์คํ ํธ์ถ์ ์ ๊ณตํฉ๋๋ค.
- ์กฐ๊ฑด ๋ณ์(Condition Variables): ์กฐ๊ฑด ๋ณ์๋ ํน์ ์กฐ๊ฑด์ด ์ถฉ์กฑ๋์์ ๋ ์ค๋ ๋์ ์ ํธ๋ฅผ ๋ณด๋ด๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ค๋ ๋๋ ๋ค๋ฅธ ์ค๋ ๋๊ฐ ์ ํธ๋ฅผ ๋ณด๋ผ ๋๊น์ง ์กฐ๊ฑด ๋ณ์์์ ๋๊ธฐํ ์ ์์ต๋๋ค. WASI ์ค๋ ๋ฉ ๋ชจ๋ธ์ ์กฐ๊ฑด ๋ณ์๋ฅผ ์์ฑ, ๋๊ธฐ ๋ฐ ์ ํธํ๋ ์์คํ ํธ์ถ์ ์ ๊ณตํฉ๋๋ค.
- ์ธ๋งํฌ์ด(Semaphores): ์ธ๋งํฌ์ด๋ ์ ํ๋ ์์ ๋ฆฌ์์ค์ ๋ํ ์ ๊ทผ์ ์ ์ดํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ธ๋งํฌ์ด๋ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฆฌ์์ค์ ์๋ฅผ ๋ํ๋ด๋ ์นด์ดํฐ๋ฅผ ์ ์งํฉ๋๋ค. ์ค๋ ๋๋ ๋ฆฌ์์ค๋ฅผ ํ๋ํ๊ธฐ ์ํด ์นด์ดํฐ๋ฅผ ๊ฐ์์ํค๊ณ ๋ฆฌ์์ค๋ฅผ ํด์ ํ๊ธฐ ์ํด ์นด์ดํฐ๋ฅผ ์ฆ๊ฐ์ํฌ ์ ์์ต๋๋ค. WASI ์ค๋ ๋ฉ ๋ชจ๋ธ์ ์ธ๋งํฌ์ด๋ฅผ ์์ฑ, ๋๊ธฐ ๋ฐ ๊ฒ์ํ๋ ์์คํ ํธ์ถ์ ์ ๊ณตํฉ๋๋ค.
์ด๋ฌํ ๋๊ธฐํ ํ๋ฆฌ๋ฏธํฐ๋ธ๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ๋ฆฌ์์ค๋ฅผ ์์ ํ๊ณ ํจ์จ์ ์ผ๋ก ๊ณต์ ํ ์ ์๋ ๋ณต์กํ ๋ฉํฐ์ค๋ ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฑํ ์ ์์ต๋๋ค.
์์์ ์ฐ์ฐ
์์ ์ธ๊ธํ๋ฏ์ด, ์์์ ์ฐ์ฐ์ ๋ฉํฐ์ค๋ ๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์ ํ์ฑ์ ๋ณด์ฅํ๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค. WASI ์ค๋ ๋ฉ ๋ชจ๋ธ์ ์์์ ๋ฉ๋ชจ๋ฆฌ ์ฐ์ฐ์ ์ ๊ณตํ๊ธฐ ์ํด memory.atomic.enable ์ ์์ ์์กดํฉ๋๋ค. ์ด๋ฌํ ์ฐ์ฐ์ ํตํด ์ค๋ ๋๋ ๋ฉ๋ชจ๋ฆฌ ์์น๋ฅผ ์์์ ์ผ๋ก ์ฝ๊ณ ์ธ ์ ์์ด ๊ฒฝ์ ์กฐ๊ฑด๊ณผ ๋ฐ์ดํฐ ์์์ ๋ฐฉ์งํฉ๋๋ค.
WASI ์ค๋ ๋ฉ ๋ชจ๋ธ์ ์ด์
WASI ์ค๋ ๋ฉ ๋ชจ๋ธ์ WebAssembly ๊ฐ๋ฐ์์๊ฒ ์ฌ๋ฌ ๊ฐ์ง ์ค์ํ ์ด์ ์ ์ ๊ณตํฉ๋๋ค:
- ์ฑ๋ฅ ํฅ์: ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํจ์ผ๋ก์จ, WASI ์ค๋ ๋ฉ ๋ชจ๋ธ์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ต์ ๋ฉํฐ์ฝ์ด ํ๋ก์ธ์๋ฅผ ์ต๋ํ ํ์ฉํ์ฌ ์ฑ๋ฅ๊ณผ ํ์ฅ์ฑ์ ํฅ์์ํฌ ์ ์๋๋ก ํฉ๋๋ค.
- ํ์คํ: WASI ์ค๋ ๋ฉ ๋ชจ๋ธ์ ์ค๋ ๋๋ฅผ ์์ฑํ๊ณ ๊ด๋ฆฌํ๋ ํ์คํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ค๋ฅธ ํ๋ซํผ์์๋ ์ผ๊ด๋๊ฒ ์คํ๋ ์ ์๋๋ก ๋ณด์ฅํฉ๋๋ค.
- ์ด์์ฑ: WASI ์ค๋ ๋ฉ ๋ชจ๋ธ์ ์ฌ์ฉํ๋ WebAssembly ๋ชจ๋์ ์น ๋ธ๋ผ์ฐ์ , ์๋ฒ ์ธก ๋ฐํ์, ์๋ฒ ๋๋ ์์คํ ๋ฑ ๋ค์ํ ํ๊ฒฝ์ผ๋ก ์ฝ๊ฒ ์ด์ํ ์ ์์ต๋๋ค.
- ๊ฐ๋ฐ ๊ฐ์ํ: WASI ์ค๋ ๋ฉ ๋ชจ๋ธ์ ์ค๋ ๋ ๊ด๋ฆฌ๋ฅผ ์ํ ์ ์์ค ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ์ฌ ๋ฉํฐ์ค๋ ๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ๊ฐ์ํํฉ๋๋ค.
- ๋ณด์ ๊ฐํ: WASI ์ค๋ ๋ฉ ๋ชจ๋ธ์ ๋ณด์์ ์ผ๋์ ๋๊ณ ์ค๊ณ๋์์ผ๋ฉฐ, ๊ธฐ๋ฅ ๊ธฐ๋ฐ ๋ณด์ ๋ชจ๋ธ์ ์ ์ฉํ๊ณ ๊ฒฝ์ ์กฐ๊ฑด์ ๋ฐฉ์งํ๊ธฐ ์ํ ์์์ ์ฐ์ฐ์ ์ ๊ณตํฉ๋๋ค.
WASI ์ค๋ ๋ฉ ๋ชจ๋ธ์ ๊ณผ์
WASI ์ค๋ ๋ฉ ๋ชจ๋ธ์ ๋ง์ ์ด์ ์ ์ ๊ณตํ์ง๋ง, ๋ช ๊ฐ์ง ๊ณผ์ ๋ ์์ต๋๋ค:
- ๋ณต์ก์ฑ: ๋ฉํฐ์ค๋ ๋ ํ๋ก๊ทธ๋๋ฐ์ ๋ณธ์ง์ ์ผ๋ก ๋ณต์กํ๋ฉฐ, ๋๊ธฐํ์ ๋ฐ์ดํฐ ๊ณต์ ์ ์ธ์ฌํ ์ฃผ์๊ฐ ํ์ํฉ๋๋ค. ๊ฐ๋ฐ์๋ ์ ํํ๊ณ ํจ์จ์ ์ธ ๋ฉํฐ์ค๋ ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฑํ๊ธฐ ์ํด WASI ์ค๋ ๋ฉ ๋ชจ๋ธ์ ๋ณต์ก์ฑ์ ์ดํดํด์ผ ํฉ๋๋ค.
- ๋๋ฒ๊น : ๊ฒฝ์ ์กฐ๊ฑด๊ณผ ๊ต์ฐฉ ์ํ(deadlock)๋ ์ฌํํ๊ณ ์ง๋จํ๊ธฐ ์ด๋ ค์ธ ์ ์์ผ๋ฏ๋ก ๋ฉํฐ์ค๋ ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋๋ฒ๊น ์ ์ด๋ ค์ธ ์ ์์ต๋๋ค. ๊ฐ๋ฐ์๋ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ์๋ณํ๊ณ ์์ ํ๊ธฐ ์ํด ์ ๋ฌธ ๋๋ฒ๊น ๋๊ตฌ๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
- ์ฑ๋ฅ ์ค๋ฒํค๋: ์ค๋ ๋ ์์ฑ ๋ฐ ๋๊ธฐํ๋ ํนํ ์ ์คํ๊ฒ ์ฌ์ฉํ์ง ์์ ๊ฒฝ์ฐ ์ฑ๋ฅ ์ค๋ฒํค๋๋ฅผ ์ ๋ฐํ ์ ์์ต๋๋ค. ๊ฐ๋ฐ์๋ ์ด๋ฌํ ์ค๋ฒํค๋๋ฅผ ์ต์ํํ๊ธฐ ์ํด ๋ฉํฐ์ค๋ ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์คํ๊ฒ ์ต์ ํํด์ผ ํฉ๋๋ค.
- ๋ณด์ ์ํ: ๊ณต์ ๋ฉ๋ชจ๋ฆฌ์ ๋๊ธฐํ ํ๋ฆฌ๋ฏธํฐ๋ธ๋ฅผ ๋ถ์ ์ ํ๊ฒ ์ฌ์ฉํ๋ฉด ๊ฒฝ์ ์กฐ๊ฑด ๋ฐ ๋ฐ์ดํฐ ์์๊ณผ ๊ฐ์ ๋ณด์ ์ํ์ ์ด๋ํ ์ ์์ต๋๋ค. ๊ฐ๋ฐ์๋ ์ด๋ฌํ ์ํ์ ์ํํ๊ธฐ ์ํด ์์ ํ ๋ฉํฐ์ค๋ ๋ ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ผ์ผ ํฉ๋๋ค.
- ํธํ์ฑ: WASI ์ค๋ ๋ฉ ๋ชจ๋ธ์ ์์ง ๋น๊ต์ ์๋ก์ด ๊ธฐ์ ์ด๋ฉฐ, ๋ชจ๋ WebAssembly ๋ฐํ์์ด ์ด๋ฅผ ์์ ํ ์ง์ํ์ง๋ ์์ต๋๋ค. ๊ฐ๋ฐ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉํ๊ธฐ ์ ์ ๋์ ๋ฐํ์์ด WASI ์ค๋ ๋ฉ ๋ชจ๋ธ์ ์ง์ํ๋์ง ํ์ธํด์ผ ํฉ๋๋ค.
WASI ์ค๋ ๋ฉ ๋ชจ๋ธ์ ์ฌ์ฉ ์ฌ๋ก
WASI ์ค๋ ๋ฉ ๋ชจ๋ธ์ ๋ค์ํ ๋ถ์ผ์ WebAssembly ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋ก์ด ๊ฐ๋ฅ์ฑ์ ์ด์ด์ค๋๋ค. ๋ช ๊ฐ์ง ์ ์ฌ์ ์ธ ์ฌ์ฉ ์ฌ๋ก๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ์ด๋ฏธ์ง ๋ฐ ๋น๋์ค ์ฒ๋ฆฌ: ์ธ์ฝ๋ฉ, ๋์ฝ๋ฉ, ํํฐ๋ง๊ณผ ๊ฐ์ ์ด๋ฏธ์ง ๋ฐ ๋น๋์ค ์ฒ๋ฆฌ ์์ ์ ์ฌ๋ฌ ์ค๋ ๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ๋ ฌํํ ์ ์์ด ์๋นํ ์ฑ๋ฅ ํฅ์์ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
- ๊ณผํ ์๋ฎฌ๋ ์ด์ : ๊ธฐ์ ์์ธก ๋ฐ ๋ถ์ ๋์ญํ๊ณผ ๊ฐ์ ๊ณผํ ์๋ฎฌ๋ ์ด์ ์ ์ข ์ข ์ฌ๋ฌ ์ค๋ ๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ๋ ฌํํ ์ ์๋ ๊ณ์ฐ ์ง์ฝ์ ์ธ ๊ณ์ฐ์ ํฌํจํฉ๋๋ค.
- ๊ฒ์ ๊ฐ๋ฐ: ๋ฌผ๋ฆฌ ์๋ฎฌ๋ ์ด์ , AI ์ฒ๋ฆฌ, ๋ ๋๋ง๊ณผ ๊ฐ์ ๊ฒ์ ๊ฐ๋ฐ ์์ ์ ์ฌ๋ฌ ์ค๋ ๋๋ฅผ ์ฌ์ฉํ ๋ณ๋ ฌ ์ฒ๋ฆฌ์ ์ด์ ์ ๋๋ฆด ์ ์์ต๋๋ค.
- ๋ฐ์ดํฐ ๋ถ์: ๋ฐ์ดํฐ ๋ง์ด๋ ๋ฐ ๋จธ์ ๋ฌ๋๊ณผ ๊ฐ์ ๋ฐ์ดํฐ ๋ถ์ ์์ ์ ์ฌ๋ฌ ์ค๋ ๋๋ฅผ ์ฌ์ฉํ ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ก ๊ฐ์ํ๋ ์ ์์ต๋๋ค.
- ์๋ฒ ์ธก ์ ํ๋ฆฌ์ผ์ด์ : ์น ์๋ฒ ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ์ ๊ฐ์ ์๋ฒ ์ธก ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ๋ฌ ์ค๋ ๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์์ ๋์ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
์ค์ฉ์ ์ธ ์์
WASI ์ค๋ ๋ฉ ๋ชจ๋ธ์ ์ฌ์ฉ์ ์ค๋ช ํ๊ธฐ ์ํด, ์ฌ๋ฌ ์ค๋ ๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐฐ์ด์ ํฉ๊ณ๋ฅผ ๊ณ์ฐํ๋ ๊ฐ๋จํ ์๋ฅผ ์๊ฐํด ๋ณด๊ฒ ์ต๋๋ค. ๋ฐฐ์ด์ ์ฌ๋ฌ ์ฒญํฌ๋ก ๋๋๊ณ , ๊ฐ ์ค๋ ๋๋ ํ ๋น๋ ์ฒญํฌ์ ํฉ๊ณ๋ฅผ ๊ณ์ฐํฉ๋๋ค. ์ต์ข ํฉ๊ณ๋ ๊ฐ ์ค๋ ๋์ ๋ถ๋ถ ํฉ๊ณ๋ฅผ ๋ํ์ฌ ๊ณ์ฐ๋ฉ๋๋ค.
๋ค์์ ์ฝ๋์ ๊ฐ๋ ์ ๊ฐ์์ ๋๋ค:
- ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ์ด๊ธฐํ: ๋ชจ๋ ์ค๋ ๋๊ฐ ์ ๊ทผํ ์ ์๋ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ํ ๋นํฉ๋๋ค.
- ์ค๋ ๋ ์์ฑ:
thread.spawn์ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ ์ค๋ ๋๋ฅผ ์์ฑํฉ๋๋ค. ๊ฐ ์ค๋ ๋๋ ์ฒ๋ฆฌํ ๋ฐฐ์ด์ ์ฒญํฌ๋ฅผ ๋ฐ์ต๋๋ค. - ๋ถ๋ถ ํฉ๊ณ ๊ณ์ฐ: ๊ฐ ์ค๋ ๋๋ ํ ๋น๋ ์ฒญํฌ์ ํฉ๊ณ๋ฅผ ๊ณ์ฐํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ์์น์ ์ ์ฅํฉ๋๋ค.
- ๋๊ธฐํ: ๋ฎคํ ์ค๋ฅผ ์ฌ์ฉํ์ฌ ๋ถ๋ถ ํฉ๊ณ๊ฐ ์ ์ฅ๋๋ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ์์น๋ฅผ ๋ณดํธํฉ๋๋ค. ์กฐ๊ฑด ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ ์ค๋ ๋๊ฐ ๊ณ์ฐ์ ์๋ฃํ์ ๋ ์ ํธ๋ฅผ ๋ณด๋ ๋๋ค.
- ์ต์ข ํฉ๊ณ ๊ณ์ฐ: ๋ชจ๋ ์ค๋ ๋๊ฐ ์๋ฃ๋ ํ, ๋ฉ์ธ ์ค๋ ๋๋ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ์์น์์ ๋ถ๋ถ ํฉ๊ณ๋ฅผ ์ฝ๊ณ ์ต์ข ํฉ๊ณ๋ฅผ ๊ณ์ฐํฉ๋๋ค.
์ค์ ๊ตฌํ์ C/C++์ ๊ฐ์ ์ธ์ด๋ก ์์ฑ๋์ด WebAssembly๋ก ์ปดํ์ผ๋๋ ๋ ๋ฎ์ ์์ค์ ์ธ๋ถ ์ฌํญ์ ํฌํจํ์ง๋ง, ์ด ์๋ WASI-threads๋ฅผ ์ฌ์ฉํ์ฌ ์ค๋ ๋๋ฅผ ์์ฑํ๊ณ , ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ๋ฉฐ, ๋๊ธฐํ๋ฅผ ๋ฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค.
๋ ๋ค๋ฅธ ์๋ก ์ด๋ฏธ์ง ์ฒ๋ฆฌ๋ฅผ ๋ค ์ ์์ต๋๋ค. ํฐ ์ด๋ฏธ์ง์ ํํฐ๋ฅผ ์ ์ฉํ๋ค๊ณ ์์ํด ๋ณด์ญ์์ค. ๊ฐ ์ค๋ ๋๋ ์ด๋ฏธ์ง์ ํ ์น์ ์ ํํฐ๋ฅผ ์ ์ฉํ๋ ์ฑ ์์ ๋งก์ ์ ์์ต๋๋ค. ์ด๊ฒ์ ์ ํ์ ์ธ '๋ถ๋๋ฌ์ธ ์ ๋๋ก ๋ณ๋ ฌ์ ์ธ'(embarrassingly parallel) ๊ณ์ฐ์ ์์ ๋๋ค.
ํฌ๋ก์คํ๋ซํผ์ ๋ฏธ์น๋ ์ํฅ
WASI ์ค๋ ๋ฉ ๋ชจ๋ธ์ ํฌ๋ก์คํ๋ซํผ ๊ฐ๋ฐ์ ์ค์ํ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ์ค๋ ๋์ ์ ๊ทผํ๋ ํ์คํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํจ์ผ๋ก์จ, ๊ฐ๋ฐ์๋ ์์ ์์ด ๋ค๋ฅธ ํ๋ซํผ์์ ์ผ๊ด๋๊ฒ ์คํ๋ ์ ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฑํ ์ ์์ต๋๋ค. ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค๋ฅธ ํ๊ฒฝ์ผ๋ก ์ด์ํ๋ ๋ฐ ํ์ํ ๋ ธ๋ ฅ์ ์ค์ด๊ณ ๊ฐ๋ฐ์๊ฐ ํ๋ซํผ๋ณ ์ธ๋ถ ์ฌํญ๋ณด๋ค๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํต์ฌ ๋ก์ง์ ์ง์คํ ์ ์๊ฒ ํฉ๋๋ค.
ํ์ง๋ง, WASI ์ค๋ ๋ฉ ๋ชจ๋ธ์ ์์ง ์งํ ์ค์ด๋ฉฐ ๋ชจ๋ ํ๋ซํผ์ด ์ด๋ฅผ ์์ ํ ์ง์ํ์ง๋ ์๋๋ค๋ ์ ์ ์ ์ํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๊ฐ๋ฐ์๋ ์์ ์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋์ง ํ์ธํ๊ธฐ ์ํด ๋ค๋ฅธ ํ๋ซํผ์์ ์ ์คํ๊ฒ ํ ์คํธํด์ผ ํฉ๋๋ค. ๋ํ, ๊ฐ๋ฐ์๋ ํ๋ซํผ๋ณ ์ฑ๋ฅ ํน์ฑ์ ์ธ์งํ๊ณ ๊ทธ์ ๋ฐ๋ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ต์ ํํด์ผ ํฉ๋๋ค.
WASI ์ค๋ ๋ฉ์ ๋ฏธ๋
WASI ์ค๋ ๋ฉ ๋ชจ๋ธ์ WebAssembly ๊ฐ๋ฐ์ ์์ด ์ค์ํ ์ง์ ์ ๋๋ค. ๋ชจ๋ธ์ด ์ฑ์ํ๊ณ ๋ ๋๋ฆฌ ์ฑํ๋จ์ ๋ฐ๋ผ, ํฌ๋ก์คํ๋ซํผ ๊ฐ๋ฐ์ ๋ฏธ๋์ ๊น์ ์ํฅ์ ๋ฏธ์น ๊ฒ์ผ๋ก ์์๋ฉ๋๋ค. ํฅํ ๊ฐ๋ฐ์๋ ๋ค์์ด ํฌํจ๋ ์ ์์ต๋๋ค:
- ์ฑ๋ฅ ํฅ์: WASI ์ค๋ ๋ฉ ๋ชจ๋ธ์ ์ฑ๋ฅ์ ์ต์ ํํ๋ ค๋ ์ง์์ ์ธ ๋ ธ๋ ฅ์ ๋ ๋น ๋ฅด๊ณ ํจ์จ์ ์ธ ๋ฉํฐ์ค๋ ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก ์ด์ด์ง ๊ฒ์ ๋๋ค.
- ๋ณด์ ๊ฐํ: ์ง์์ ์ธ ์ฐ๊ตฌ ๊ฐ๋ฐ์ WASI ์ค๋ ๋ฉ ๋ชจ๋ธ์ ๋ณด์์ ๊ฐํํ๊ณ , ์ ์ฌ์ ์ํ์ ์ํํ๋ฉฐ, ๋ฉํฐ์ค๋ ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํ๋ ๋ฐ ์ด์ ์ ๋ง์ถ ๊ฒ์ ๋๋ค.
- ๊ธฐ๋ฅ ํ์ฅ: WASI ์ค๋ ๋ฉ ๋ชจ๋ธ์ ํฅํ ๋ฒ์ ์๋ ์ถ๊ฐ์ ์ธ ์์คํ ํธ์ถ ๋ฐ ๋๊ธฐํ ํ๋ฆฌ๋ฏธํฐ๋ธ๊ฐ ํฌํจ๋ ์ ์์ผ๋ฉฐ, ์ด๋ ๊ฐ๋ฐ์์๊ฒ ๋ณต์กํ ๋ฉํฐ์ค๋ ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๊ธฐ ์ํ ๋ ๋ง์ ๋๊ตฌ๋ฅผ ์ ๊ณตํ ๊ฒ์ ๋๋ค.
- ๋ ๋์ ์ฑํ: WASI ์ค๋ ๋ฉ ๋ชจ๋ธ์ด WebAssembly ๋ฐํ์์์ ๋ ๋๋ฆฌ ์ง์๋จ์ ๋ฐ๋ผ, ํฌ๋ก์คํ๋ซํผ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ ๊ฐ๋ฐ์์๊ฒ ์ ์ ๋ ๋งค๋ ฅ์ ์ธ ์ต์ ์ด ๋ ๊ฒ์ ๋๋ค.
๊ฒฐ๋ก
WASI ์ค๋ ๋ฉ ๋ชจ๋ธ์ WebAssembly ๊ธฐ์ ์ ์ค์ํ ๋ฐ์ ์ ๋ํ๋ด๋ฉฐ, ๊ฐ๋ฐ์๊ฐ ๋ค์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํด ๋ฉํฐ์ฝ์ด ํ๋ก์ธ์์ ํ์ ํ์ฉํ ์ ์๊ฒ ํฉ๋๋ค. ํ์คํ๋๊ณ , ์ด์ ๊ฐ๋ฅํ๋ฉฐ, ์์ ํ ์ค๋ ๋ฉ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํจ์ผ๋ก์จ, WASI๋ ๊ฐ๋ฐ์๊ฐ ๋ค์ํ ํ๋ซํผ์์ ์ผ๊ด๋๊ฒ ์คํ๋๋ ๊ณ ์ฑ๋ฅ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฑํ ์ ์๋๋ก ์ง์ํฉ๋๋ค. ๋ณต์ก์ฑ, ๋๋ฒ๊น , ํธํ์ฑ ์ธก๋ฉด์์ ๊ณผ์ ๊ฐ ๋จ์ ์์ง๋ง, WASI ์ค๋ ๋ฉ ๋ชจ๋ธ์ ์ด์ ์ ๋ถ์ธํ ์ ์์ต๋๋ค. ๋ชจ๋ธ์ด ๊ณ์ํด์ ์งํํ๊ณ ์ฑ์ํจ์ ๋ฐ๋ผ, WebAssembly ๊ฐ๋ฐ๊ณผ ํฌ๋ก์คํ๋ซํผ ์ปดํจํ ์ ๋ฏธ๋์ ์ ์ ๋ ์ค์ํ ์ญํ ์ ํ ๊ฒ์ ์ฝ์ํฉ๋๋ค. ์ด ๊ธฐ์ ์ ์์ฉํจ์ผ๋ก์จ ์ ์ธ๊ณ ๊ฐ๋ฐ์๋ค์ WebAssembly๋ก ๊ฐ๋ฅํ ๊ฒ์ ๊ฒฝ๊ณ๋ฅผ ๋ํ๋ฉฐ ๋ ๊ฐ๋ ฅํ๊ณ ํจ์จ์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์์ ๊ฒ์ ๋๋ค.
๋ ๋ง์ ์กฐ์ง๊ณผ ๊ฐ๋ฐ์๋ค์ด ์ด๋ฌํ ๊ธฐ์ ์ ์ฑํํจ์ ๋ฐ๋ผ WebAssembly์ WASI์ ๊ธ๋ก๋ฒ ์ํฅ๋ ฅ์ ๊ณ์ ์ปค์ง ๊ฒ์ ๋๋ค. ์น ์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ ํฅ์์์๋ถํฐ ์๋ก์ด ์๋ฒ ์ธก ๋ฐ ์๋ฒ ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ํ์ฑํ์ ์ด๋ฅด๊ธฐ๊น์ง, WebAssembly๋ ๊ด๋ฒ์ํ ์ฌ์ฉ ์ฌ๋ก์ ๋ํด ๋ค์ฌ๋ค๋ฅํ๊ณ ํจ์จ์ ์ธ ์๋ฃจ์ ์ ์ ๊ณตํฉ๋๋ค. WASI ์ค๋ ๋ฉ ๋ชจ๋ธ์ด ์ฑ์ํด์ง์ ๋ฐ๋ผ, WebAssembly์ ์ ์ฌ๋ ฅ์ ๋์ฑ ๋ฐํ์์ผ ์ ์ธ๊ณ ์ํํธ์จ์ด ๊ฐ๋ฐ์ ๋ ๋์ ์ฑ๋ฅ, ๋ณด์, ๊ทธ๋ฆฌ๊ณ ์ด์ ๊ฐ๋ฅํ ๋ฏธ๋๋ฅผ ์ํ ๊ธธ์ ์ด์ด์ค ๊ฒ์ ๋๋ค.